package com.zpl.common.support.invoke;

import com.zpl.common.rpc.RpcMessageDto;

/**
 * @author zhupanlin
 * @version 1.0
 * @description: TODO
 * @date 2024/9/8 12:18
 */
public interface IInvokeService {

    /**
     * 添加请求信息
     * @param seqId 序列号
     * @param timeoutMills 超时时间
     * @return
     */
    IInvokeService addRequest(final String seqId,
                              final long timeoutMills);

    /**
     * 放入结果
     * @param seqId 唯一标识
     * @param rpcMessage 响应结果
     * @return
     */
    IInvokeService addResponse(final String seqId,
                               final RpcMessageDto rpcMessage);

    /**
     * 获取标志信息对应的结果
     * @param seqId 序列号
     * @return
     */
    RpcMessageDto getResponse(final String seqId);

    /**
     * 是否依然包含请求待处理
     * @return
     */
    boolean remainsRequest();
}
